const path = require("path");
let projectName = process.env.PROJECT_NAME;
console.log("工程名称：" + projectName);
const FileManagerPlugin = require('filemanager-webpack-plugin')
const CompressionPlugin = require('compression-webpack-plugin');//引入compression-webpack-plugin
const isProd = process.env.NODE_ENV === 'production'
const Timestamp = new Date().getTime();
const dayjs = require('dayjs')
const curTime = dayjs().format('YYYY_MM_DD_HH:mm:ss')

const config = require("./config/projectsConfig.js");
module.exports = {
    /* 部署生产环境和开发环境下的URL：可对当前环境进行区分，baseUrl 从 Vue CLI 3.3 起已弃用，要使用publicPath */
    publicPath: process.env.NODE_ENV === "production" ? "" : "./",
    /* 输出文件目录：在npm run build时，生成文件的目录名称 */
    // outputDir: 'dist/SDXT',
    /* 放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录 */
    assetsDir: "assets",
    /* 是否在构建生产包时生成 sourceMap 文件，false将提高构建速度 */
    productionSourceMap: false,
    /* 默认情况下，生成的静态资源在它们的文件名中包含了 hash 以便更好的控制缓存，你可以通过将这个选项设为 false 来关闭文件名哈希。(false的时候就是让原来的文件名不改变) */
    filenameHashing: true,
    /* 代码保存时进行eslint检测 */
    lintOnSave: false,
    devServer: {
        inline: true,
        port: 10022,
        open: "open http://localhost:10022"
    },
    // 输出文件目录
    outputDir: projectName ? "dist/" + projectName + "/" : "dist/makeFriends",
    // 根据当前执行的指令引用对应的模块
    ...config[projectName],
    pluginOptions: {
        "style-resources-loader": {
            preProcessor: "less",
            patterns: [path.resolve(__dirname, "src/assets/theme.less")], // 引入全局样式变量
        },
    },

    // configureWebpack: {
    //     output: { // 输出重构  打包编译后的 文件名称  【模块名称.版本号.时间戳】
    //         filename: `js/[name].${Timestamp}.js`,
    //         chunkFilename: `js/[name].${Timestamp}.js`
    //     },
    //     optimization: isProd ? {
    //         splitChunks: {
    //             chunks: 'all',
    //             maxInitialRequests: Infinity, // 默认为3，调整为允许无限入口资源
    //             minSize: 20000, // 20K以下的依赖不做拆分
    //             cacheGroups: {
    //                 vendors: {
    //                     // 拆分依赖，避免单文件过大拖慢页面展示
    //                     // 得益于HTTP2多路复用，不用太担心资源请求太多的问题
    //                     name(module) {
    //                         // 拆包
    //                         const packageName = module.context.match(/[\\/]node_modules[\\/](.*?)([\\/]|$)/)[1]
    //                         // 进一步将Ant组件拆分出来,请根据情况来
    //                         // const packageName = module.context.match(/[\\/]node_modules[\\/](?:ant-design-vue[\\/]es[\\/])?(.*?)([\\/]|$)/)[1]
    //                         return `npm.${packageName.replace('@', '')}` // 部分服务器不允许URL带@
    //                     },
    //                     test: /[\\/]node_modules[\\/]/,
    //                     priority: -10,
    //                     chunks: 'initial'
    //                 }
    //             }
    //         },
    //         runtimeChunk: { name: entrypoint => `runtime-${entrypoint.name}` }
    //     } : {},
    // },
    // chainWebpack: config => {
    //     //压缩gzip
    //     if (isProd) {//生产环境
    //         // 图片打包后丢失，暂时屏蔽此方法
    //         // const imgRule = config.module.rule('images')
    //         // imgRule
    //         //     .test(/\.(png|jpe?g|gif|webp)(\?.*)?$/)
    //         //     .use('image-webpack-loader')
    //         //     .loader('image-webpack-loader')
    //         //     .options({ bypassOnDebug: true })
    //         //     .end()
    //         config.plugin('CompressionPlugin').use(CompressionPlugin, [{
    //             /* [file]被替换为原始资产文件名。
    //                [path]替换为原始资产的路径。
    //                [dir]替换为原始资产的目录。
    //                [name]被替换为原始资产的文件名。
    //                [ext]替换为原始资产的扩展名。
    //                [query]被查询替换。*/
    //             filename: '[path].gz[query]',
    //             //压缩算法
    //             algorithm: 'gzip',
    //             //匹配文件
    //             test: /\.js$|\.css$|\.html$/,
    //             //压缩超过此大小的文件,以字节为单位
    //             threshold: 10240,
    //             minRatio: 0.8,
    //             //删除原始文件只保留压缩后的文件
    //             //deleteOriginalAssets: false
    //         }])
    //     }
    //     //配置打包压缩文件
    //     // config.plugin('FileManagerPlugin').use(FileManagerPlugin, [{
    //     //     events: {
    //     //         onEnd: {
    //     //             delete: [   //首先需要删除项目根目录下的dist.zip
    //     //                 './MDYJ.zip',
    //     //             ],
    //     //             archive: [ //然后我们选择MDYJ文件夹将之打包成MDYJ.zip并放在根目录
    //     //                 { source: './MDYJ/', destination: `./MDYJ_${curTime}.zip` },
    //     //             ],
    //     //         }
    //     //     }
    //     // }]).end()
    //     const svgRule = config.module.rule('svg')
    //     svgRule.uses.clear()
    //     svgRule
    //         .use('svg-sprite-loader')
    //         .loader('svg-sprite-loader')
    //         .options({
    //             symbolId: 'icon-[name]'
    //         }).end()
    //         .use('svgo-loader')
    //         .loader('svgo-loader')
    //         .end()
    // },
};